/*
 * EntityFactory.h
 *
 */

#ifndef ENTITYFACTORY_H_
#define ENTITYFACTORY_H_
#include "IEntidad.h"
#include "../utils/types.h"
#include "../utils/const.h"
#include "bplustree/IElement.h"
#include "entities/SimpleSecondaryIndex.h"
#include "entities/SimpleStringSecondaryindex.h"

/**
 * Clase encargada de crear todas las entidades
 */
class EntityFactory {
public:
	EntityFactory();
	virtual ~EntityFactory();
	static SimpleSecondaryIndex* createSimpleSecondaryIndex(ESTRUCTURAS type);
	static SimpleStringSecondaryindex* createSimpleStringSecondaryIndex(ESTRUCTURAS type);
	static IEntidad* createEntity(ESTRUCTURAS type);
	/**
	 * Crea una entidad a partir de un Element. Elemento indexable con clave generica
	 * Luego
	 */
	static IEntidad* createEntity(ESTRUCTURAS type,IElement* element);
};

#endif /* ENTITYFACTORY_H_ */
